package com.whmall.service.crm.module.supplierreview;

import com.whmall.component.entity.dto.PageReqDTO;
import com.whmall.component.entity.dto.PageRspDTO;
import com.whmall.service.crm.module.supplierreview.entity.SupplierReviewAttachmentDO;
import com.whmall.service.crm.module.supplierreview.entity.SupplierReviewDO;
import com.whmall.service.crm.module.supplierreview.entity.SupplierReviewInformationDO;
import com.whmall.service.crm.module.supplierreview.entity.SupplierReviewTagStatisticsDO;

import java.util.List;

/**
 * 供应商评论仓库
 *
 * @author alex
 * @since 2021/1/19
 */
public interface SupplierReviewRepository {
    /**
     * 分页查询供应商评论
     *
     * @param pageRequest 分页请求
     * @param criteria    查询条件
     * @return 分页的供应商评论列表
     */
    PageRspDTO<SupplierReviewDO> findReviewPageByQueryCriteria(PageReqDTO pageRequest,
                                                               SupplierReviewQueryCriteria criteria);

    /**
     * 查询供应商评论列表
     *
     * @param criteria 查询条件
     * @return 供应商评论列表
     */
    List<SupplierReviewDO> findReviewListByQueryCriteria(SupplierReviewQueryCriteria criteria);

    /**
     * 根据评论ID列表查询对应的评论信息
     *
     * @param reviewIds 评论ID列表
     * @return 评论信息列表
     */
    List<SupplierReviewInformationDO> findInformationByReviewIds(List<Long> reviewIds);

    /**
     * 根据评论ID列表查询对应的评论附件列表
     *
     * @param reviewIds 评论ID列表
     * @return 评论附件列表
     */
    List<SupplierReviewAttachmentDO> findAttachementByReviewIds(List<Long> reviewIds);

    /**
     * 根据公司ID查找该公司的所有评论标签统计列表
     *
     * @param companyId 公司ID，即CRM供应商公司ID
     * @return 供应商评论标签统计
     */
    List<SupplierReviewTagStatisticsDO> findReviewTagStatsByCompanyId(Long companyId);
}
